package com.resms.saas.api.constant;

import com.resms.saas.api.bean.Tuple3;

import java.nio.charset.Charset;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 配置常量，定义配置的默认值
 * 1.系统初始化时，可用配置的默认值常量配置初始化系统
 * 2.读取配置时，可用配置的默认值常量作为默认值返回
 *
 *
 * 键常量定义，规范配置项键的定义，具有规范和校验的双重职能,KEY_开头，大写字母
 * 值常量定义，常量值提供统一的定义，避免多处重复定义
 * 注释定义，提供常量（或覆盖的配置）的注释说明，可用于异常文本输出和调试说明之用
 * Created by sam on 2019/5/28.<br >
 */
public class ConfigurationConstant {

    /*============================================key start===================================================*/
    public static final String KEY_DEFAULT_ENCODING_S = "defaultEncodingString";
    public static final String KEY_DEFAULT_ENCODING = "defaultEncoding";
    public static final String KEY_USER_NAME = "UNAME";
    public static final String KEY_SESSION_ID = "SESSIONID";
    /*============================================key end=====================================================*/

    /*===========================================value start==================================================*/
    public static final String UNKNOW_VALUE = "UNKNOW";
    public static final String DEFAULT_ENCODING_S = "UTF-8";
    public static final Charset DEFAULT_ENCODING = Charset.forName(DEFAULT_ENCODING_S);
    /*===========================================value end====================================================*/

    private static final Map<String, Tuple3<String,Object,String>> defaultConfigurationMap = new ConcurrentHashMap<String,Tuple3<String,Object,String>>();
    static {
        defaultConfigurationMap.put(KEY_DEFAULT_ENCODING_S,new Tuple3<String,Object, String>(KEY_DEFAULT_ENCODING_S,DEFAULT_ENCODING_S,"字符集字符串"));
//        defaultConfigurationMap.put(KEY_DEFAULT_ENCODING,new Tuple3<String,Object, String>(KEY_DEFAULT_ENCODING,DEFAULT_ENCODING,"字符集"));
        defaultConfigurationMap.put(KEY_USER_NAME,new Tuple3<String,Object,String>(KEY_USER_NAME,UNKNOW_VALUE,"用户名"));
    }
}
